package com.ymttest.database.sharding.db.sharding.query;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

/**
 */
public interface CommandShardingQuery {

	/**
	 * 订单(全量)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrder(@Param("orderId") long orderId);

	/**
	 * 订单
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrderPayment(@Param("orderId") long orderId,
			@Param("userId") long userId);

	/**
	 * 订单基本信息
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrderBase(@Param("orderId") long orderId);

	/**
	 * 订单(下单)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrderPlace(@Param("orderId") long orderId);

	/**
	 * 订单(支付)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrderPay(@Param("orderId") long orderId);

	/**
	 * 订单(支付)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrderPay(@Param("orderId") long orderId,
			@Param("userId") long userId);

	/**
	 * 订单(取消)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrderCancel(@Param("orderId") long orderId);

	/**
	 * 订单(退款)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrderRefund(@Param("orderId") long orderId);

	/**
	 * 订单(身份证)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrderIdCard(@Param("orderId") long orderId);

	/**
	 * 订单(风控)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrderRisk(@Param("orderId") long orderId);

	/**
	 * 订单(接单)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrderAccept(@Param("orderId") long orderId);

	/**
	 * 订单(收货)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrderReceive(@Param("orderId") long orderId);

	/**
	 * 订单(发货)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrderDelivery(@Param("orderId") long orderId);

	/**
	 * 订单(物流类型)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrderDeliveryType(
			@Param("orderId") long orderId);

	/**
	 * 订单(业务来源)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrderBiz(@Param("orderId") long orderId);

	/**
	 * 订单(修改地址)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrderAddress(@Param("orderId") long orderId);

	/**
	 * 订单(调整价格)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrderDiscount(@Param("orderId") long orderId);

	/**
	 * 订单(新老买家卖家)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrderNewUserSeller(
			@Param("orderId") long orderId);

	/**
	 * 订单(删除)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrderDelete(@Param("orderId") long orderId);

	/**
	 * 商品
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getProduct(@Param("orderId") long orderId);
	
	/**
	 * 神器商品
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getShenqiProduct(@Param("orderId") long orderId);

	/**
	 * 商品(下单)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getProductPlace(@Param("orderId") long orderId);

	/**
	 * 商品(支付)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getProductPay(@Param("orderId") long orderId);

	/**
	 * 商品(退款)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getProductRefund(@Param("orderId") long orderId);

	/**
	 * 商品(调整价格)
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getProductDiscount(@Param("orderId") long orderId);

	/**
	 * 交易状态日志
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getStatusLog(@Param("orderId") long orderId);

	/**
	 * 组合商品
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getSubProduct(@Param("orderId") long orderId);

	/**
	 * 退款
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getRefund(@Param("orderId") long orderId);
	
	/**
	 * 神器退款
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getShenqiRefund(@Param("orderId") long orderId);

	/**
	 * 发货-收货冻结状态变更
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getFreeze(@Param("orderId") long orderId);

	/**
	 * 冻结类型
	 *
	 * @param orderId
	 * @return
	 */
	List<String> getFreezeBizType(@Param("orderId") long orderId);

	/**
	 * 预付卡卡号
	 *
	 * @param orderId
	 * @return
	 */
	List<String> getPrepaidCard(@Param("orderId") long orderId,
			@Param("userId") long userId);

	/**
	 * 预付卡退款
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getPrepaidCardRefund(
			@Param("orderId") long orderId);
	
	/**
	 * 第三方退款状态
	 *
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getThirdpartyRefundStatus(
			@Param("orderId") long orderId);
	
	/**
	 * 获取商品代理链
	 * 
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getProductProxies(@Param("orderId") long orderId);
	
	/**
	 * 获取订单扩展信息
	 * 
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrderExt(@Param("orderId") long orderId);
	
	/**
	 * 获取订单详情扩展信息
	 * 
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getProductExt(@Param("orderId") long orderId);
	
	/**
	 * 获取神器买手利润链
	 * 
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getShenqiSellerProfits(@Param("orderId") long orderId);
	
	/**
	 * 获取订单商品子码列表
	 * 
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getOrderDetailSubCode(@Param("orderId") long orderId);
	
	/**
	 * 获取自提信息
	 * 
	 * @param orderId
	 * @return
	 */
	List<Map<String, Object>> getPickUp(@Param("orderId") long orderId);
}
